package com.frejoys.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.frejoys.common.dto.admin.AdminStoreEnterUpdateStatusDto;
import com.frejoys.common.dto.admin.SetEnterAgentDto;
import com.frejoys.common.dto.admin.StoreEnterStatusDto;
import com.frejoys.common.dto.admin.UpdateAgentDto;
import com.frejoys.common.dto.app.AddStoreEnterDto;
import com.frejoys.common.dto.app.StoreEnterUpdateStatusDto;
import com.frejoys.common.dto.app.UpStoreEnterDto;
import com.frejoys.common.dto.common.PageDto;
import com.frejoys.common.vo.admin.UserAgentVo;
import com.frejoys.common.vo.app.StoreEnterDetailsVo;
import com.frejoys.common.vo.app.StoreEnterListVo;
import com.frejoys.common.vo.app.StoreEnterVo;
import com.frejoys.dao.entity.StoreEnter;

import java.util.List;

public interface StoreEnterService extends IService<StoreEnter> {

    default StoreEnter getOnly(QueryWrapper<StoreEnter> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    default StoreEnter getOnly(LambdaQueryWrapper<StoreEnter> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    /**
     * 获取商家入驻的代理人
     * @param userId 商家userId
     * @return
     */
    Long getAgentUserId(Long userId);

    //商家入驻申请
    Integer insertStoreEnter(Long userId,AddStoreEnterDto dto);


    //代理人查询商家入驻列表
    List<StoreEnterListVo> agentStoreEnterInfo(Long agentUserId, PageDto dto);


    //添加代理人
    Integer updateAgent(UpdateAgentDto dto);

    //修改代理人
    Integer setEnterAgent(SetEnterAgentDto dto);


    /**
     * 查询是否已经申请入住
     */
    boolean applyPending(Long userId);

    /**
     * 查询用户入驻申请记录,驳回时查询驳回原因
     */
    StoreEnterVo queryStoreEnter(Long userId);

    //修改商家入驻申请
    Integer upStoreEnter(UpStoreEnterDto dto);
}
